package cn.gzsf.csmall.product.service.impl;


import cn.gzsf.csmall.product.ex.ServiceException;
import cn.gzsf.csmall.product.mapper.AlbumMapper;
import cn.gzsf.csmall.product.mapper.AttributeTemplateMapper;
import cn.gzsf.csmall.product.pojo.entity.Album;
import cn.gzsf.csmall.product.pojo.entity.AttributeTemplate;
import cn.gzsf.csmall.product.pojo.param.AlbumAddNewParam;
import cn.gzsf.csmall.product.pojo.param.AttributeTemplateAddNewParam;
import cn.gzsf.csmall.product.service.IAlbumService;
import cn.gzsf.csmall.product.service.IAttributeTemplateService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

@Slf4j
@Service   //Service层必须@Service注解
public class AttributeTemplateServiceImpl implements IAttributeTemplateService {

    @Autowired
    private AttributeTemplateMapper attributeTemplateMapper;

    @Override
    public void addNew(AttributeTemplateAddNewParam attributeTemplateAddNewParam)  {
        log.debug("开始处理[添加属性模板]的业务，参数：" + attributeTemplateAddNewParam);
        //检查属性模板名称是否被占用，如果被占用，则抛出异常
        QueryWrapper<AttributeTemplate> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("name",attributeTemplateAddNewParam.getName());
        int countByname = attributeTemplateMapper.selectCount(queryWrapper);
        log.debug("根据属性模板名统计匹配的属性模板数量：结果：{},{}",countByname);
        if(countByname>0){
            String message = "添加属性模板失败，属性模板名称被占用";
            log.warn(message);
            throw new ServiceException(message);
        }
        //将属性模板数据写入数据库中
        AttributeTemplate attributeTemplate = new AttributeTemplate();
        BeanUtils.copyProperties(attributeTemplateAddNewParam,attributeTemplate);
        attributeTemplate.setGmtCreate(LocalDateTime.now());
        attributeTemplate.setGmtModified(LocalDateTime.now());
        log.debug("准备将新属性模板的数据插入数据库，数据：{}", attributeTemplate);
        attributeTemplateMapper.insert(attributeTemplate);
        log.debug("将新属性模板的数据插入数据库完成！");
    }
}
